package com.yidu.hbatsams.service.Impl;

import com.github.pagehelper.PageHelper;
import com.yidu.hbatsams.dao.AtsDataDicMapper;
import com.yidu.hbatsams.domain.AtsDataDic;
import com.yidu.hbatsams.service.AtsDataDicSerivce;
import com.yidu.hbatsams.utils.redis.RedisUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 数据字典
 */
@Service
public class AtsDataDicSerivceImpl implements AtsDataDicSerivce {

    @Resource
    AtsDataDicMapper ddicDao;

    @Override
    public List<AtsDataDic> selectAll(Integer pageNum,Integer pageSize,String dname, String dtype) {
        //存入页数大小及页数
        PageHelper.startPage(pageNum, pageSize);
        //调用查询所有方法
        List<AtsDataDic> list =ddicDao.selectAll(dname,dtype);
        return list;
    }

    /**
     * 总行数
     * @return
     */
    @Override
    public int count() {
        //返回查询总行数方法
        return ddicDao.count();
    }

    /**
     * 修改状态
     * @param did
     * @return
     */
    @Override
    public int updateId(Integer did) {
        //新建AtsDataDic
        AtsDataDic atsDataDic = new AtsDataDic();
        //给id赋值
        atsDataDic.setDid(did);
        //给状态
        atsDataDic.setIsva(0);
        //返回修改状态方法
        return ddicDao.updateByPrimaryKeySelective(atsDataDic);
    }

    /**
     * 根据Id查询
     * @param did
     * @return
     */
    @Override
    public AtsDataDic findById(Integer did) {
        //调用根据id查询方法
        AtsDataDic ddic = ddicDao.findById(did);
        return ddic;
    }

    /**
     * 增加
     * @param atsDataDic
     * @return
     */
    @Override
    public int insertSelective(AtsDataDic atsDataDic) {
        //给状态赋值
        atsDataDic.setIsva(1);
        //创建人
        atsDataDic.setCreater("文晓源");
        //创建时间
        atsDataDic.setCreattime(new Date());
        //调用增加方法
        int row = ddicDao.insertSelective(atsDataDic);
        return row;
    }

    /**
     * 修改
     * @param atsDataDic
     * @return
     */
    @Override
    public int updateByPrimaryKeySelective(AtsDataDic atsDataDic) {

        //调用根据id查询方法
        AtsDataDic ddic = ddicDao.findById(atsDataDic.getDid());
        //状态
        atsDataDic.setIsva(1);
        //创建人
        atsDataDic.setCreater(ddic.getCreater());
        //创建时间
        atsDataDic.setCreattime(ddic.getCreattime());
        //返回修改方法
        return ddicDao.updateByPrimaryKeySelective(atsDataDic);
    }

    /**
     * 查询技术等级
     * @return
     */
    @Override
    public List<AtsDataDic> findBySkill() {
        return ddicDao.findBySkill();
    }

    /**
     * 文化程度
     * @return
     */
    @Override
    public List<AtsDataDic> findByCulture() {
        return ddicDao.findByCulture();
    }

    /**
     * 最好成绩
     * @return
     */
    @Override
    public List<AtsDataDic> findByBest() {
        return ddicDao.findByBest();
    }
    @Resource
    RedisUtil redisUtil;
    /**
     * 根据字典编码查询
     * @param dcode
     * @return
     */
    @Override
    public List<AtsDataDic> selectDcode(String dcode) {
        //调用缓存
        List<AtsDataDic> list = (List<AtsDataDic>)redisUtil.get("hbats_dic_"+dcode);
        //判断集合是否为空
        if(list==null){
            //调用查询字典编码方法
            list = ddicDao.selectDcode(dcode);
            //给予缓存
            redisUtil.set("hbats_dic_"+dcode,list);
        }
        //返回集合
        return list;
    }
}
